home *** CD-ROM | disk | FTP | other *** search
/ Reverse Code Engineering RCE CD +sandman 2000 / ReverseCodeEngineeringRceCdsandman2000.iso / RCE / Softice Tuts / si-ug-chapter05.rtf < prev    next >
Text File  |  2000-05-25  |  73KB  |  2,204 lines

  1. CHAPTER 5 - Using Other Commands
  2.  
  3.      05.01 Display and Edit Commands
  4.      05.02 I/O Port Commands
  5.      05.03 Transfer Control Commands
  6.      05.04 Debug Mode Commands
  7.      05.05 Utility Commands
  8.      05.06 Specialized Debugging Commands
  9.      05.07 Windowing Commands
  10.      05.08 Debugger Customization Commands
  11.      05.09 Screen Control Commands
  12.      05.10 Symbol and Source Line Commands
  13.  
  14. 05.01 Display and Edit Commands
  15.  
  16.      U Unassemble instructions or display source
  17.      R Display or change registers
  18.      MAP Display system memory map
  19.      D, DB, DW, DD Display memory
  20.      E, EB, EW, ED Edit memory
  21.      INT? Display last interrupt number
  22.      ? or H Display help information
  23.      VER Display Soft-ICE version number
  24.  
  25. Unassemble instructions or display source
  26.  
  27.      Syntax :
  28.  
  29.           U [address] [L[=]length]
  30.  
  31.           Length :
  32.                The number of instructions to be unassembled
  33.  
  34.      Comments :
  35.  
  36.           The U command displays the instructions of the program being
  37.           debugged.
  38.  
  39.           If length is not specified, the length defaults to eight lines if
  40.           available, or one less than the screen length.
  41.  
  42.           If address is not specified, the command unassembles at address
  43.           starting at the first byte after the last byte unassembled by a
  44.           previous unassemble command. If the has been no previous
  45.           unassemble command, the address defaults to the current CS:IP.
  46.  
  47.           If the code window is visible, the instructions are displayed in
  48.           the code window.
  49.  
  50.           If source is loaded for the address range specified then source
  51.           lines may be displayed depending on the current source mode.
  52.  
  53.      Example :
  54.  
  55.           U $-10
  56.  
  57.           This command unassembles instructions beginning 10 hexadecimal
  58.           bytes before the current address.
  59.  
  60.           U .499
  61.  
  62.           This command displays the current source file starting at line
  63.           499. The code window must be visible and in source mode.
  64.  
  65. Display or change registers
  66.  
  67.      Syntax :
  68.  
  69.           R register-name [ [ = ]value] ]
  70.  
  71.           Register-name :
  72.                Any register (FL for flags)
  73.           Value :
  74.                If register-name is any name other than FL, value is a hex
  75.                value or an expression. If register-name is FL, value is a
  76.                series of one or more of the following flag symbols, each
  77.                optionally preceded by a plus or minus sign : O (Overflow
  78.                flag), D (Direction flag), I (Interrupt flag), S (Sign
  79.                flag), Z (Zero flag), A (Auxiliary carry flag), P (Parity
  80.                flag), C (Carry flag).
  81.  
  82.      Comments :
  83.  
  84.           The R command displays or changes register values.
  85.  
  86.           If no parameters are supplied, all register and flag value are
  87.           displayed, as well as the instruction at the current CS:IP
  88.           address.
  89.  
  90.           If register-name is supplied without a value, Soft-ICE displays
  91.           the current value of the specified register and prompts you for a
  92.           new value. If register-name is FL, flags that are set are
  93.           displayed as highlighted uppercase characters; flags that are
  94.           cleared are displayed as non-highlighted lowercase characters. To
  95.           retain the current value of a register, press ENTER.
  96.  
  97.           If both register-name and value are supplied, the specified
  98.           register's contents are changed to the value.
  99.  
  100.           To change a flag value, use FL as the register-name, followed by
  101.           the symbols of the flag whose values you want to toggle. To turn
  102.           a flag on, precede the flag symbol with a plus sign. To turn a
  103.           flag off, precede the flag symbol with a minus sign. The flags
  104.           can be listed in any order.
  105.  
  106.      Examples :
  107.  
  108.           RAH 5
  109.  
  110.           This command sets the AH register equal to 5.
  111.  
  112.           R FL = OZP
  113.  
  114.           This command toggles the O, Z, and P flag values.
  115.  
  116.           R FL
  117.  
  118.           This command displays the current flag values, and allows them to
  119.           be changed.
  120.  
  121.           RFL O + A-C
  122.  
  123.           This command toggles the O flag value, turns on the flag value,
  124.           and turns off the C flag value.
  125.  
  126. Display system memory map
  127.  
  128.      Syntax :
  129.  
  130.           MAP
  131.  
  132.      Comments :
  133.  
  134.           The MAP command displays the names, locations, and sizes of
  135.           system memory components. The size is displayed in paragraphs.
  136.           One paragraph is equivalent to 10 hexadecimal bytes.
  137.  
  138.           The component that the CS:IP register currently points to is
  139.           highlighted.
  140.  
  141.           Use the MAP command when A break point occurs and CS:IP is not in
  142.           a known memory region. You want to get control within a resident
  143.           program or system program. A range break point can be set based
  144.           on the starting address and size reflected by MAP. You suspect a
  145.           program or system component of writing over code outside of its
  146.           memory space. MAP is used to obtain the memory address of the
  147.           region to use with the CSIP command. You need to find out which
  148.           resident program owns certain interrupt vectors.
  149.  
  150.      Example :
  151.  
  152.           MAP
  153.  
  154.           The following is a sample display produced by the command :
  155.  
  156.            Start Length
  157.            0000:0000 0040 Interrupt Vector Table
  158.            0040:0000 0030 ROM BIOS Variables
  159.            0070:0000 00FE I/O System
  160.            016E:0000 06B7 DOS
  161.            0842:0000 02CE DOS File Table & Buffers
  162.            A000:0000 5E00 System BUS
  163.            F000:0000 1000 ROM BIOS
  164.  
  165.           Versions of DOS lower than 3.1 display program addresses instead
  166.           of displaying the program names.
  167.  
  168. Display memory
  169.  
  170.      Syntax :
  171.  
  172.           D [size] [address] [L[ = ]length]
  173.  
  174.           Size :
  175.                B(yte), W(ord), D(ouble)
  176.           Length :
  177.                The number of bytes to be displayed.
  178.  
  179.      Comments :
  180.  
  181.           The D command displays the memory contents of the specified
  182.           address.
  183.  
  184.           The contents are displayed in the format of the size specified.
  185.           If no size is specified, the last size used will be displayed.
  186.           The ASCII representation is also displayed for all forms.
  187.  
  188.           If address is not specified, the command displays memory at the
  189.           address starting at the first byte after the last byte displayed.
  190.  
  191.           If length is not specified, it defaults to eight lines, or fewer
  192.           if the window is smaller.
  193.  
  194.           If the data window is visible, the data is displayed in the data
  195.           window and the length is ignored.
  196.  
  197.      Example :
  198.  
  199.           DW DS:00 L=8
  200.  
  201.           This command displays, in word format and in ASCII format, the
  202.           value of the first eight bytes of the current data segment.
  203.  
  204. Edit memory
  205.  
  206.      Syntax :
  207.  
  208.           D [size] [address] [L[ = ]length]
  209.  
  210.           Size :
  211.                B(yte), W(ord), D(ouble)
  212.           Data-list :
  213.                list of data objects of the specified size (Bytes, Words or
  214.                Double Words) or quoted strings separated by commas or
  215.                spaces. The quoted string can begin with a single quote or a
  216.                double quote.
  217.  
  218.      Comments :
  219.  
  220.           The E commands display the memory contents at the specified
  221.           address, and allow you to edit the values.
  222.  
  223.           These commands display the memory contents in ASCII format, and
  224.           in the format of the size specified.
  225.  
  226.           A memory editor is provided for quick memory updates. Memory can
  227.           be edited by typing ASCII characters, or by typing byte, word, or
  228.           double word values. If no size is specified, the last size used
  229.           will be assumed. The memory Editing key strokes are:
  230.  
  231.           UP            Move cursor up
  232.           DOWN          Move cursor down
  233.           LEFT          Move cursor right
  234.           RIGHT         Move cursor left
  235.           SPACE         Move cursor to next element
  236.           TAB           Toggle between numeric and ASCII areas
  237.           ESC or ENTER  Exit memory editor
  238.  
  239.           As values are input, the actual memory locations are updated. All
  240.           numeric values are hex numbers. To toggle between the ASCII and
  241.           numeric display areas, press the TAB key.
  242.  
  243.           If the data window is visible, the data is edited in the data
  244.           window, otherwise the data is edited in the command window.
  245.  
  246.           The data display length defaults to 8 lines if in the command
  247.           window, or to the size of the data window if it's visible.
  248.  
  249.           If no parameters are supplied, the cursor moves into the data
  250.           window if the data window if visible. If the data window is not
  251.           visible, the data is edited in the command window at the last
  252.           address displayed or edited.
  253.  
  254.      Examples :
  255.  
  256.           EB 1000:0
  257.  
  258.           This command displays, in byte format, up to six lines containing
  259.           both the numeric and the ASCII representation of the values of
  260.           the data starting at location 1000:0000. Once the lines are
  261.           displayed, you can edit the values.
  262.  
  263.           EB 8000:0 "Hello",0D
  264.  
  265.           This command replaces the values starting at location 8000:0000
  266.           with the string "Hello" followed by a carriage return.
  267.  
  268. Display last interrupt number
  269.  
  270.      Syntax :
  271.  
  272.           INT?
  273.  
  274.      Comments :
  275.  
  276.           The INT? command displays the address and the number the last
  277.           interrupt that happened.
  278.  
  279.      Example :
  280.  
  281.           INT?
  282.  
  283.           An example of the display produced by the INT? command follows:
  284.  
  285.            Last Interrupt: 16
  286.            At: 0070:0255
  287.  
  288.           This example shows that the last interrupt generated in the
  289.           system before the Soft-ICE window was brought up was an interrupt
  290.           16 hexadecimal, at location 0070:0255H. If the last interrupt
  291.           that happened was a software interrupt, unassembling the code at
  292.           0070:0255H will show the interrupt instruction. If it was a
  293.           hardware interrupt, unassembling the code will show the
  294.           instruction that was executing when the hardware interrupt
  295.           occurred.
  296.  
  297. Display help information
  298.  
  299.      Syntax :
  300.  
  301.           < ? | H > [command | expression]
  302.  
  303.      Comments :
  304.  
  305.           The ? command and the H command both display help information.
  306.  
  307.           If no parameters are specified, help displays short descriptions
  308.           of all the commands and operators, one screen at a time. Press
  309.           any key to continue, or press ESC to quit displaying help.
  310.  
  311.           If command is specified, help displays more detailed information
  312.           on the specified command, including the command syntax and an
  313.           example.
  314.  
  315.           If expression is specified, the expression is evaluated and the
  316.           result is displayed in hexadecimal, decimal, and ASCII.
  317.  
  318.      Examples :
  319.  
  320.           ? ALTKEY
  321.  
  322.           This command displays information about the ALTKEY command,
  323.           including its syntax and an example.
  324.  
  325.           H 10 + 14*2
  326.  
  327.           This command displays: 0038 00056 "8". These are the hexadecimal,
  328.           decimal and ASCII representations of value of the expression "10
  329.           + 14*2".
  330.  
  331. Display Soft-ICE version number
  332.  
  333.      Syntax :
  334.  
  335.           VER
  336.  
  337.      Example :
  338.  
  339.           VER
  340.  
  341.           This command displays the Soft-ICE version and the Nu-Mega
  342.           Technologies copyright message.
  343.  
  344. 05.02 I/O Port Commands
  345.  
  346.      I, IB or IW Input from I/O port
  347.      O, OB or OW Output to byte I/O port
  348.  
  349. Input from I/O port
  350.  
  351.      Syntax :
  352.  
  353.           I [size] port
  354.  
  355.           Size :
  356.                B(yte), W(ord), D(ouble)
  357.           Port :
  358.                A byte or word value
  359.  
  360.      Comments :
  361.  
  362.           The input from port commands are used to read and display a value
  363.           from a hardware port. Input can be done From byte or word ports.
  364.           If no size is specified, the default is byte.
  365.  
  366.      Example :
  367.  
  368.           I 21
  369.  
  370.           This command displays the mask register for interrupt controller
  371.           one.
  372.  
  373. Output from I/O port
  374.  
  375.      Syntax :
  376.  
  377.           O [size] port
  378.  
  379.           Size :
  380.                B(yte), W(ord), D(ouble)
  381.           Port :
  382.                A byte or word value
  383.           Value :
  384.                A byte for a byte port or a word for a word port
  385.  
  386.      Comments :
  387.  
  388.           The output to port commands are used to write a value to a
  389.           hardware port. Output can be done to byte or word ports If no
  390.           size is specified, the default is byte.
  391.  
  392.      Example :
  393.  
  394.           O 21 FF
  395.  
  396.           This command masks off all the interrupts for interrupt
  397.           controller one.
  398.  
  399. 05.03 Transfer Control Commands
  400.  
  401.      X Exit from Soft-ICE window
  402.      G Go to address
  403.      T Trace one instruction
  404.      P Program step
  405.      HERE Go to current cursor line
  406.      GENINT Force an interrupt
  407.      EXIT Force exit of current DOS program
  408.      BOOT System boot (retain Soft-ICE)
  409.      HBOOT Hard system boot (total reset)
  410.  
  411. Exit from Soft-ICE window
  412.  
  413.      Syntax :
  414.  
  415.           X
  416.  
  417.      Comments :
  418.  
  419.           The X command exits the Soft-ICE window and restores control to
  420.           the program that was interrupted to bring up Soft-ICE. The
  421.           Soft-ICE window disappears. If any break points have been set,
  422.           they become active.
  423.  
  424.      Example :
  425.  
  426.           X
  427.  
  428.           Exits the Soft-ICE window and restores control to the program
  429.           that was interrupted.
  430.  
  431. Go to address
  432.  
  433.      Syntax :
  434.  
  435.           G [=start-address] [break-address]
  436.  
  437.      Comments :
  438.  
  439.           The G command exits from the Soft-ICE window with a single
  440.           one-time execution break point set. In addition, all sticky break
  441.           points are armed.
  442.  
  443.           Execution begins at the current CS:IP unless the start-address
  444.           parameter is supplied. In that case execution begins at
  445.           start-address. Execution continues until break-address is
  446.           encountered, the window pop-up key sequence is used, or a sticky
  447.           break point occurs.
  448.  
  449.           The break-address must be the first byte of an instruction
  450.           opcode.
  451.  
  452.           When the specified break-address is reached, the current CS:IP
  453.           will be the instruction where the break point was set.
  454.  
  455.           The G command with no parameters behaves the same as the X
  456.           command.
  457.  
  458.           The non-sticky execution break point uses an 80386 break point
  459.           register, unless all break point registers have been allocated to
  460.           sticky break points. In that case, an INT 3 style break point is
  461.           implemented. When this case occurs, the G and P commands will not
  462.           work correctly in ROM. An error message will be displayed if this
  463.           is attempted.
  464.  
  465.      Example :
  466.  
  467.           G CS:1234
  468.  
  469.           This command sets a one time break point at CS:1234
  470.  
  471. Trace one instruction
  472.  
  473.      Syntax :
  474.  
  475.           T [=start-address] [count]
  476.  
  477.      Comments :
  478.  
  479.           The T command single steps one instruction by utilizing the
  480.           single step flag.
  481.  
  482.           Execution begins at the current CS:IP unless the start-address
  483.           parameter is specified. If start-address is specified, CS:IP is
  484.           changed to start- address prior to single stepping.
  485.  
  486.           If count is specified then Soft-ICE single steps count time The
  487.           TRACE command will continue until the count is exhausted or the
  488.           Esc key is pressed, regardless of which break points are reached.
  489.  
  490.           In source mode, the T command steps to the next source statement.
  491.           If the current statement is a procedure or function call, and
  492.           source exists for the routine being called, T steps into the
  493.           call. If there is no source available for the called procedure or
  494.           function, T steps over the routine.
  495.  
  496.      Example :
  497.  
  498.           T = 1284 3
  499.  
  500.           This command single steps through three instruction starting at
  501.           memory location 1284.
  502.  
  503. Program step
  504.  
  505.      Syntax :
  506.  
  507.           P
  508.  
  509.      Comments :
  510.  
  511.           The P command is a logical program step. One instruction at the
  512.           current CS:IP is executed unless the instruction is a call,
  513.           interrupt, loop, or repeated string instruction. In those cases,
  514.           the entire routine or iteration is completed before control is
  515.           returned to Soft-ICE.
  516.  
  517.           The P command uses a one-time execution break point. The
  518.           non-sticky execution break point uses an 80386 break point
  519.           register, unless all break point registers have been allocated to
  520.           sticky break points. In that case, an INT3 style break point is
  521.           implemented. When this case occurs, the P and G commands will not
  522.           work correctly in ROM. An error message will be displayed if this
  523.           is attempted.
  524.  
  525.           In source mode, the P command steps to the next source statement.
  526.           If the current statement is a procedure or function call, the P
  527.           command steps over the it.
  528.  
  529.      Example :
  530.  
  531.           P
  532.  
  533.           This command executes one 'program step'.
  534.  
  535. Go to current cursor line
  536.  
  537.      Syntax :
  538.  
  539.           HERE
  540.  
  541.      Comments :
  542.  
  543.           The HERE command executes until the program reaches the current
  544.           cursor line. HERE is only available when the cursor is in the
  545.           code window. If the code window is not visible or the cursor is
  546.           not in the code window, use the G command instead.
  547.  
  548.           The HERE command exits from Soft-ICE with a single one-time
  549.           execution break point set. In addition, all sticky break points
  550.           are armed.
  551.  
  552.           Execution begins at the current CS:IP and continues until address
  553.           of the current cursor position in the code window encountered,
  554.           the window pop-up key sequence is used, a sticky break point
  555.           occurs.
  556.  
  557.           The non-sticky execution break point uses an 80386 break point
  558.           register, unless all break point registers have been allocated to
  559.           sticky break points. In that case, an INT 3 style break point is
  560.           implemented. When this case occurs, the HERE command will not
  561.           work correctly in ROM. An error message will be displayed if this
  562.           is attempted.
  563.  
  564.      Example :
  565.  
  566.           HERE
  567.  
  568.           This example sets an execution break point at the current cursor
  569.           position, then exits from Soft-ICE and begins execution at the
  570.           current CS:IP. Default Function Key: F7
  571.  
  572. Force an interrupt
  573.  
  574.      Syntax :
  575.  
  576.           GENINT INT1 | INT3 | NMI | interrupt-number
  577.  
  578.           Interrupt-number :
  579.                a number in the range 00 - FF
  580.  
  581.      Comments :
  582.  
  583.           The GENINT command forces an interrupt to occur. This function
  584.           can be used to hand off control to another debugger when using
  585.           Soft-ICE with another software debugger. It can also be used to
  586.           test interrupt routines.
  587.  
  588.           The GENINT command simulates the processing sequence of a
  589.           hardware interrupt or an INT instruction. It pushes the flags,
  590.           the CS register, and the IP register, then changes the value of
  591.           the CS and IP registers to the value of the interrupt vector
  592.           table entry corresponding with the specified interrupt number.
  593.  
  594.      Example :
  595.  
  596.           GENINT NMI
  597.  
  598.           This forces a non-maskable interrupt. This will give control back
  599.           to CodeView if Soft-ICE is being used as an assistant to
  600.           CodeView.
  601.  
  602. Force exit of current DOS program
  603.  
  604.      Syntax :
  605.  
  606.           EXIT [R] [D]
  607.  
  608.           R :
  609.                Restore the interrupt vector table
  610.           D :
  611.                Delete all break points
  612.  
  613.      Comments :
  614.  
  615.           The EXIT command attempts to abort the current program by forcing
  616.           a DOS exit function (INT 21H, function 4CH) This command will
  617.           only work if the DOS is in a state where it is able to accept the
  618.           exit function call. If this call is made from certain interrupt
  619.           routines, or other times when the DOS is not ready, the system
  620.           may behave unpredictably.
  621.  
  622.           This function does NOT do any system resetting other than the
  623.           interrupt table when the R option is used. This means that BIOS
  624.           variables, video modes and other systems level data are not
  625.           restored.
  626.  
  627.           Using the R option will cause the interrupt vectors to be
  628.           restored to whatever they were the last time they were saved.
  629.           Soft-ICE saves the interrupt vectors when it is loaded, when a
  630.           program is loaded with LDR.EXE, and when the VECS S command is
  631.           used.
  632.  
  633.      Note :
  634.  
  635.           To re-start a program that has been loaded with the Soft-ICE
  636.           program loader (LDR.EXE) do the following:
  637.  
  638.           EXIT R
  639.  
  640.           LDR prog.EXE
  641.  
  642.           The EXIT command will restore the interrupt table to the values
  643.           it contained before the program was loaded, then exit to the
  644.           command processor. By running the LDR utility and specifying the
  645.           .EXE suffix, the program is loaded back in without re-loading
  646.           symbols and source. The symbols and source will remain in memory.
  647.  
  648.      Caution :
  649.  
  650.           The EXIT command should be used with care. Since Soft-ICE can be
  651.           popped up at any time, a situation can occur where the DOS is not
  652.           in a state to accept an exit function call. Also, the EXIT
  653.           command does not do any program specific resetting. For instance,
  654.           the EXIT command does not reset the video mode. If your program
  655.           has placed the video BIOS and hardware in a particular video
  656.           mode, it will stay in that mode after the EXIT command.
  657.  
  658.      Example :
  659.  
  660.           EXIT R
  661.  
  662.           Restores the interrupt table and exits the current program. The R
  663.           option should be used if exiting from a program loaded with the
  664.           Soft-ICE program loader LDR.EXE.
  665.  
  666. System boot (retain Soft-ICE)
  667.  
  668.      Syntax :
  669.  
  670.           BOOT
  671.  
  672.      Comments :
  673.  
  674.           The BOOT command resets the system and retains Soft-ICE. BOOT is
  675.           required to debug boot sequences, DOS loadable drivers, and
  676.           non-DOS operating systems.
  677.  
  678.           BOOT is implemented with an Interrupt 19H ROM BIOS call. In some
  679.           instances memory may be corrupted to the point where Interrupt 19
  680.           will not work. If this occurs, bring up Soft-ICE and use the
  681.           HBOOT command.
  682.  
  683.           For BOOT to work properly, Soft-ICE should be installed as a
  684.           loadable driver in CONFIG.SYS before any other device drivers.
  685.           This is so Soft-ICE can restore the original system state as
  686.           accurately as possible.
  687.  
  688.      Example :
  689.  
  690.           BOOT
  691.  
  692.           This command makes the system reboot. Soft-ICE remains resident.
  693.  
  694. Hard system boot (total reset)
  695.  
  696.      Syntax :
  697.  
  698.           HBOOT
  699.  
  700.      Comments :
  701.  
  702.           The HBOOT command resets the entire system. Soft-ICE is not
  703.           retained in the reset process. HBOOT is sufficient unless an
  704.           adapter card requires a power-on reset. In those rare cases, the
  705.           machine power must be recycled.
  706.  
  707.      Example :
  708.  
  709.           HBOOT
  710.  
  711.           This command makes the system reboot. Soft-ICE must be reloaded.
  712.  
  713. 05.04 Debug Mode Commands
  714.  
  715.      ACTION Set action after break point is reached
  716.      WARN Set DOS/ROM BIOS re-entrancy warning mode
  717.      BREAK Break out any time
  718.      I3HERE Direct Interrupt 3's to Soft-ICE
  719.  
  720. Set action after break point is reached
  721.  
  722.      Syntax :
  723.  
  724.           ACTION [INT1 | INT3 | NMI | HERE | int-number]
  725.  
  726.           Int-number :
  727.                Any valid interrupt number (0-FFH). Use this option only if
  728.                a user-supplied break point qualification routine has taken
  729.                over that interrupt vector (see section 11.2).
  730.  
  731.      Comments :
  732.  
  733.           The ACTION command determines where control is given when break
  734.           point conditions have been met. In most cases, the desired action
  735.           is INT3 or HERE, INT3 is typically used if Soft-ICE is being used
  736.           with a host debugger, HERE is used when it is desired to return
  737.           to Soft-ICE when break point conditions have been met, INT1 and
  738.           NMI are alternatives for certain debuggers that will not work
  739.           with the INT3 option. For instance, CODEVIEW works best with
  740.           ACTION set to NMI.
  741.  
  742.           Use int-number if there is a user-supplied break point
  743.           qualification routine installed. Using int-number without having
  744.           a user-supplied break point qualification routine installed
  745.           causes an error. For more information, see section
  746.           11.2,'User-Qualified Break Points'.
  747.  
  748.           If no parameter is supplied with the ACTION command, the current
  749.           action is displayed.
  750.  
  751.           The default action is HERE.
  752.  
  753.      Example :
  754.  
  755.           ACTION HERE
  756.  
  757.           This command specifies that control will return to Soft-ICE when
  758.           break point conditions have been met.
  759.  
  760. Set DOS/ROM BIOS re-entrancy warning mode
  761.  
  762.      Syntax :
  763.  
  764.           WARN [ON | OFF]
  765.  
  766.      Comments :
  767.  
  768.           The WARN command is provided for using Soft-ICE with debuggers
  769.           that use DOS and ROM BIOS. Many debuggers use DOS and ROM BIOS
  770.           for screen output and for receiving keystrokes. Since DOS and ROM
  771.           BIOS are not fully re- entrant, these debuggers may not work
  772.           properly if break point occurs while the DOS or ROM BIOS is
  773.           executing.
  774.  
  775.           If WARN ON is set, and ACTION is not HERE, then control will come
  776.           to Soft- ICE before the actual action occurs. The system displays
  777.           the current CS:IP and gives you the choice of continuing or
  778.           returning to Soft-ICE. Generally, you should choose to return to
  779.           Soft-ICE to continue your debugging. Only continue with the host
  780.           debugger if you know your debugger will not cause DOS or ROM BIOS
  781.           to be re-entered.
  782.  
  783.           WARN mode should be turned on to use Soft-ICE with DEBUG, SYMDEB,
  784.           and CODEVIEW.
  785.  
  786.           If no parameter is specified, the current state of WARN is
  787.           displayed.
  788.  
  789.           The default is WARN mode OFF.
  790.  
  791.      Example :
  792.  
  793.           WARN ON
  794.  
  795.           This command turns on DOS/ROM BIOS re-entrancy warning mode.
  796.  
  797. Break out any time
  798.  
  799.      Syntax :
  800.  
  801.           BREAK [ON | OFF]
  802.  
  803.      Comments :
  804.  
  805.           The BREAK command allows popping up the Soft-ICE window when the
  806.           system is hung with interrupts disabled. Break mode can be used
  807.           for the entire debugging session, or it can be turned on and off
  808.           when it is required.
  809.  
  810.           Break mode degrades system performance slightly. This performance
  811.           degradation must be weighed against the necessity of breaking out
  812.           of a hung program. A user may want to have break mode on all the
  813.           time, even though performance is degraded, because the program
  814.           could hang at any time.
  815.  
  816.           Unlike other debuggers that can also be brought up at any time,
  817.           Soft-ICE does not require an external switch. When BREAK is on,
  818.           the Soft-ICE window can be brought up at any time by pressing the
  819.           current key sequence.
  820.  
  821.           If no parameter is specified, the current state of BREAK is
  822.           displayed
  823.  
  824.           The default is BREAK mode OFF.
  825.  
  826.      Example :
  827.  
  828.           BREAK ON
  829.  
  830.           This command turns on break mode. This means that the Soft-ICE
  831.           window can be brought up at any time, even if interrupts are
  832.           disabled.
  833.  
  834. Direct Interrupt 3's to Soft-ICE
  835.  
  836.      Syntax :
  837.  
  838.           I3HERE [ON | OFF]
  839.  
  840.      Comments :
  841.  
  842.           The I3HERE command lets you specify that any Interrupt 3 will
  843.           bring up the Soft-ICE window. This feature is useful for stopping
  844.           your program in a specific location.
  845.  
  846.           To use this feature, place an INT 3 into your code at the
  847.           location where you want to stop. When the INT 3 occurs, it will
  848.           bring up the Soft-ICE window. At this point, you can use the R IP
  849.           command to change your instruction pointer to the instruction
  850.           after the INT 3, then you can continue debugging.
  851.  
  852.           If no parameter is specified, the current state of 13HERE is
  853.           displayed.
  854.  
  855.           The default is 13HERE mode OFF.
  856.  
  857.      Example :
  858.  
  859.           I3HERE ON
  860.  
  861.           This command turns on 13HERE mode. Any INT 3's generated after
  862.           this point will bring up the Soft-ICE window.
  863.  
  864. 05.05 Utility Commands
  865.  
  866.      A Assemble code
  867.      S Search for data
  868.      F Fill memory with data
  869.      M Move data
  870.      C Compare two data blocks
  871.  
  872. Assemble code
  873.  
  874.      Syntax :
  875.  
  876.           A [address]
  877.  
  878.      Comments :
  879.  
  880.           The Soft-ICE assembler allows you to assemble instructions
  881.           directly into memory. The assembler supports the basic 8086
  882.           instruction set with the 80186 and 80286 real address mode
  883.           extensions. Numeric co-processor instructions and 80386 specific
  884.           instructions, registers and addressing modes can NOT be
  885.           assembled.
  886.  
  887.           The A command enters the Soft-ICE interactive assembler. An
  888.           address is displayed as a prompt for each assembly line After an
  889.           assembly language instruction is typed in and ENTER is pressed,
  890.           the instructions are assembled into memory at the specified
  891.           address. Instructions must be entered with standard Intel format.
  892.           Press ENTER at an address prompt to exit assembler mode.
  893.  
  894.           If the address range in which you are assembling instructions is
  895.           visible in the code window, the instructions will change
  896.           interactively as you assemble.
  897.  
  898.           The Soft-ICE assembler supports the standard 8086 family
  899.           mnemonics, however there are some special additions :
  900.  
  901.           The DB mnemonic is used to define bytes of data directly into
  902.           memory. The DB command is followed by a list of bytes and/or
  903.           quoted strings separated by spaces or commas.
  904.  
  905.           The RETF mnemonic represents a far return.
  906.  
  907.           WORD PTR and BYTE PTR are used to determine data size if there is
  908.           no register argument, for example: MOV BYTE PTR ES:[ 1234],1.
  909.  
  910.           Use FAR and NEAR to explicitly assemble far and near jumps and
  911.           calls. If FAR or NEAR is not specified then all jumps and calls
  912.           are near.
  913.  
  914.           Operands referring to memory locations should placed in square
  915.           brackets, for example: MOV AX,[1234].
  916.  
  917.      Example :
  918.  
  919.           A CS:1234
  920.  
  921.           This command prompts you for assembly instruction then assembles
  922.           them beginning at offset 1234H with the current code segment.
  923.           Press ENTER at the address prompt after entering the last
  924.           instruction.
  925.  
  926. Search for data
  927.  
  928.      Syntax :
  929.  
  930.           S address L length data-list
  931.  
  932.           Data-list :
  933.                list of bytes or quoted strings separated by commas or
  934.                spaces. A quoted string can begin with a single quote or a
  935.                double quote.
  936.           Length :
  937.                length in bytes
  938.  
  939.      Comments :
  940.  
  941.           The S command searches memory for a series of bytes or characters
  942.           that matches the data-list. The search begins at the specified
  943.           address and continues for the length specified. The address of
  944.           each occurrence found in the range is displayed.
  945.  
  946.      Example :
  947.  
  948.           S DS:SI+10 L CX 'Hello',12,34
  949.  
  950.           This command searches for the string 'Hello' followed by the
  951.           bytes 12H and 34H starting at offset SI+10 in the current data
  952.           segment and ending CX bytes later.
  953.  
  954. Fill memory with data
  955.  
  956.      Syntax :
  957.  
  958.           F address L length data-list
  959.  
  960.           Data-list :
  961.                list of bytes or quoted strings separated by commas or
  962.                spaces. A quoted string can begin with a single quote or a
  963.                double quote.
  964.           Length :
  965.                length in bytes
  966.  
  967.      Comments :
  968.  
  969.           The F command fills memory with the series of bytes or characters
  970.           specified in the data-list. Memory is filled starting at the
  971.           specified address and continuing for the specified length,
  972.           repeating the data-list if necessary.
  973.  
  974.      Example :
  975.  
  976.           F 8000:0 L 100 'Test'
  977.  
  978.           This command fills memory starting at 8000:0 for a length of 100H
  979.           bytes with the string 'Test'. The string Test' is repeated until
  980.           the fill length is exhausted.
  981.  
  982. Move data
  983.  
  984.      Syntax :
  985.  
  986.           M start-address L length end-address
  987.  
  988.           Length :
  989.                length in bytes
  990.  
  991.      Comments :
  992.  
  993.           The M command moves the specified number of bytes from the
  994.           start-address in memory to the end-address in memory.
  995.  
  996.      Example :
  997.  
  998.           M 1000:0 L 200 2000:0
  999.  
  1000.           This command moves 200H bytes from memory location 1000:0 to
  1001.           memory location 2000:0.
  1002.  
  1003. Compare two data blocks
  1004.  
  1005.      Syntax :
  1006.  
  1007.           C address1 L length address2
  1008.  
  1009.           Length :
  1010.                length in bytes
  1011.  
  1012.      Comments :
  1013.  
  1014.           The C command compares the memory block specified by address1 and
  1015.           the length with the memory block specified address2 and the
  1016.           length. When a byte from the first data block does not match a
  1017.           byte from the second data block, both bytes are displayed, along
  1018.           with their addresses.
  1019.  
  1020.      Example :
  1021.  
  1022.           C 5000:100 L 10 6000:100
  1023.  
  1024.           This command compares the 10H bytes starting at memory location
  1025.           5000:100 with the 10H bytes starting at memory location 6000:100.
  1026.  
  1027. 05.06 Specialized Debugging Commands
  1028.  
  1029.      SHOW Display instructions from history buffer
  1030.      TRACE Enter trace simulation mode
  1031.      XT Single step in trace simulation mode
  1032.      XP Program step in trace simulation mode
  1033.      XG Go to address in trace simulation mode
  1034.      XRSET Reset back trace buffer
  1035.      VECS Save/restore/compare interrupt vectors
  1036.      SNAP Take snap shot of memory block
  1037.      EMMMAP Display EMM allocation map
  1038.  
  1039. Display instructions from history buffer
  1040.  
  1041.      Syntax :
  1042.  
  1043.           SHOW [B | start]
  1044.  
  1045.           B :
  1046.                This tells the show command to start the display with the
  1047.                oldest instruction in the back trace buffer.
  1048.           start :
  1049.                The number of instructions back from the buffer end (last
  1050.                instruction captured) to begin display.
  1051.  
  1052.      Comments :
  1053.  
  1054.           The SHOW command displays instructions from the back trace
  1055.           history buffer. If source is available for the instructions then
  1056.           the display is in mixed mode, otherwise only code is displayed.
  1057.  
  1058.           SHOW allows scrolling through the back trace buffer with the up,
  1059.           down, Pageup and PaqeDn keys. To exit from SHOW you must press
  1060.           the Esc key.
  1061.  
  1062.           Preceding the address of each instruction is the buffer entry
  1063.           number. This number shows how deep into the buffer you are
  1064.           displaying. The higher the number, the deeper you are into the
  1065.           buffer.
  1066.  
  1067.      Note :
  1068.  
  1069.           Before using the SHOW command, instructions must have been logged
  1070.           with a back trace range. See chapter 9 for more information on
  1071.           back trace ranges.
  1072.  
  1073.      Hints :
  1074.  
  1075.           It is often useful to have the code window visible with the
  1076.           actual code of the region you are displaying from the back trace
  1077.           buffer. When you compare the actual instruction flow to code,
  1078.           displayed jumps and calls are usually less confusing.
  1079.  
  1080.           Using SHOW in conjunction with the TRACE command will allow you
  1081.           to see the instructions in the back trace history buffer from two
  1082.           different points of view.
  1083.  
  1084.      Example :
  1085.  
  1086.           SHOW 40
  1087.  
  1088.           This example will displays starting with the 40th instruction
  1089.           back in the back trace buffer.
  1090.  
  1091. Enter trace simulation mode
  1092.  
  1093.      Syntax :
  1094.  
  1095.           TRACE [start] | [OFF]
  1096.  
  1097.           start :
  1098.                The number of instructions back from the buffer end (last
  1099.                instruction captured) to begin trace simulation.
  1100.           OFF :
  1101.                Exit trace simulation mode.
  1102.  
  1103.      Comments :
  1104.  
  1105.           The TRACE command allows you to replay instructions from the
  1106.           instruction back trace history buffer just as if they were being
  1107.           executed for the first time. To use trace simulation mode you
  1108.           must have the code window visible After entering trace simulation
  1109.           mode you use the XT, XP and XG commands to trace through the
  1110.           instructions in the buffer.
  1111.  
  1112.           To exit trace simulation mode type TRACE OFF.
  1113.  
  1114.           TRACE with no parameters specified displays whether trace
  1115.           simulation mode is on or off.
  1116.  
  1117.      Note :
  1118.  
  1119.           Before using the TRACE command, instructions must have been
  1120.           logged with a back trace range. See chapter 9 for more
  1121.           information on back trace ranges.
  1122.  
  1123.      Hints :
  1124.  
  1125.           Trace simulation mode is most useful when the code window is
  1126.           visible. It is often useful to use TRACE in conjunction with the
  1127.           SHOW command. This allows the instructions in the back trace
  1128.           history buffer to be viewed simultaneously in two different
  1129.           forms.
  1130.  
  1131.      Example :
  1132.  
  1133.           TRACE 40
  1134.  
  1135.           This example enters trace simulation mode starting 40
  1136.           instructions back from the last instruction logged. It will
  1137.           remain in trace simulation mode until TRACE OFF is entered.
  1138.  
  1139. Single step in trace simulation mode
  1140.  
  1141.      Syntax :
  1142.  
  1143.           XT [R]
  1144.  
  1145.           R :
  1146.                Single step in reverse direction.
  1147.  
  1148.      Comments :
  1149.  
  1150.           The XT command single steps through the instruction back trace
  1151.           history buffer. This command acts like the T command for normal
  1152.           debugging. Note that the registers do NOT change while stepping
  1153.           in trace simulation mode except CS and IP.
  1154.  
  1155.           The XT instruction allows you to replay instructions from the
  1156.           back trace history buffer,
  1157.  
  1158.      Note :
  1159.  
  1160.           Before using XT you must be in trace simulation mode. See chapter
  1161.           9 and the TRACE command in this section for more information on
  1162.           back trace ranges.
  1163.  
  1164.      Hint :
  1165.  
  1166.           If you are using XT frequently, like any other Soft-ICE command
  1167.           it can be assigned to a function key.
  1168.  
  1169.      Example :
  1170.  
  1171.           XT
  1172.  
  1173.           This command single steps one instruction in trace simulation
  1174.           mode.
  1175.  
  1176. Program step in trace simulation mode
  1177.  
  1178.      Syntax :
  1179.  
  1180.           XP
  1181.  
  1182.      Comments :
  1183.  
  1184.           The XP command does a logical program step through the
  1185.           instruction back trace history buffer. This command acts like the
  1186.           P command for normal debugging. Note that the registers do NOT
  1187.           change while stepping in trace simulation mode except CS and IP.
  1188.  
  1189.           The XP instruction allows you to replay instructions from the
  1190.           back trace history buffer.
  1191.  
  1192.      Note :
  1193.  
  1194.           Before using XP you must be in trace simulation mode. See chapter
  1195.           9 and the TRACE command in this section for more information on
  1196.           back trace ranges.
  1197.  
  1198.      Hint :
  1199.  
  1200.           If you are using XP frequently, like any other Soft-ICE command
  1201.           it can be assigned to a function key.
  1202.  
  1203.      Example :
  1204.  
  1205.           XP
  1206.  
  1207.           This command executes one program step in trace simulation mode.
  1208.  
  1209. Go to an address in trace simulation mode
  1210.  
  1211.      Syntax :
  1212.  
  1213.           XG [R] address
  1214.  
  1215.           R :
  1216.                Search for address in reverse direction.
  1217.           Address :
  1218.                Address to go to in the back trace history buffer.
  1219.  
  1220.      Comments :
  1221.  
  1222.           The XG command moves the instruction pointer to the next
  1223.           occurrence of the specified address in the back trace history
  1224.           buffer. If R is specified preceding the address, then the
  1225.           instruction pointer is moved to the previous occurrence the
  1226.           specified address in the back trace buffer.
  1227.  
  1228.           The address must be the first byte of an instruction opcode.
  1229.  
  1230.           The XG is analogous to the G command in normal debugging.
  1231.  
  1232.           Note :
  1233.  
  1234.           Before using XG you must be in trace simulation mode. See chapter
  1235.           9 and the TRACE command in this section for more information on
  1236.           back trace ranges.
  1237.  
  1238.      Example :
  1239.  
  1240.           XG 273:1030
  1241.  
  1242.           This command moves the instruction pointer to the next instance
  1243.           of the instruction at address 273:1030.
  1244.  
  1245. Reset back trace history buffer
  1246.  
  1247.      Syntax :
  1248.  
  1249.           XRSET
  1250.  
  1251.      Comments :
  1252.  
  1253.           The XRSET command resets the back trace history buffer. This
  1254.           command should be executed before setting a back trace range if
  1255.           there is unwanted instruction information in the back trace
  1256.           buffer.
  1257.  
  1258.      Example :
  1259.  
  1260.           XRSET
  1261.  
  1262.           This command resets the back trace buffer.
  1263.  
  1264. Save/restore/compare interrupt vectors
  1265.  
  1266.      Syntax :
  1267.  
  1268.           VECS [C|S|R]
  1269.  
  1270.           C :
  1271.                Compare current table with stored table
  1272.           S :
  1273.                Save current interrupt table to buffer
  1274.           R :
  1275.                Restore interrupt table from buffer
  1276.  
  1277.      Comments :
  1278.  
  1279.           The VECS command allows you to save and restore the interrupt
  1280.           table to an internal Soft-ICE buffer. The actual table can also
  1281.           be compared to the stored table with the differences displayed.
  1282.  
  1283.           When the C option is used to compare the current interrupt vector
  1284.           table with the stored copy the output is in the following format:
  1285.  
  1286.           address old-vector new-vector
  1287.  
  1288.           Each vector that has changed is displayed.
  1289.  
  1290.           The interrupt vector table is initially stored when Soft-ICE is
  1291.           loaded. It is also automatically stored when a program loaded
  1292.           with LDR.EXE. Only one copy of the interrupt vector table is
  1293.           stored, so each time VECS S is executed, previous copy of the
  1294.           interrupt table is overwritten.
  1295.  
  1296.           If no parameters are specified, the entire interrupt vector table
  1297.           is displayed.
  1298.  
  1299.      Example :
  1300.  
  1301.           VECS C
  1302.  
  1303.           This command compares the actual interrupt vector table with one
  1304.           that had been previously stored in the Soft-ICE internal VECS
  1305.           buffer.
  1306.  
  1307. Take snap shot of memory block
  1308.  
  1309.      Syntax :
  1310.  
  1311.           SNAP [C | S | R] address1 address2
  1312.  
  1313.           C :
  1314.                Compare buffer with address range
  1315.           S :
  1316.                Save address range to buffer
  1317.           R :
  1318.                Restore buffer to address range
  1319.  
  1320.      Comments :
  1321.  
  1322.           The SNAP command takes a snap shot of a memory block for later
  1323.           comparison. The S option copies a block of memory to a buffer in
  1324.           extended memory. The C option displays differences between the
  1325.           buffer in extended memory and the actual memory specified by the
  1326.           address range. The R option copies the buffer in extended memory
  1327.           to the address range in conventional memory.
  1328.  
  1329.           When the C option is used to compare the buffer with the address
  1330.           range the output is in the following format :
  1331.  
  1332.           address old-data new-data
  1333.  
  1334.           Each byte that has changed is displayed.
  1335.  
  1336.           The address is usually not necessary for the C and R options. If
  1337.           the address is not specified, the address from the last time SNAP
  1338.           was entered with a specified address used.
  1339.  
  1340.      Notes :
  1341.  
  1342.           To use the SNAP command you must have specified the /TRA XXXX
  1343.           switch on the S-ICE.EXE line in CONFIG.SYS.
  1344.  
  1345.           The SNAP command saves data in the back trace history buffer. If
  1346.           you are using back trace then you will have a conflict with SNAP.
  1347.           Specifically, SNAP will overwrite back trace information if you
  1348.           do a SNAP S when instruction history is in the back trace buffer.
  1349.           Conversely, if you have saved a region with SNAP, then enabling a
  1350.           back trace range will overwrite the SNAP buffer.
  1351.  
  1352.      Example :
  1353.  
  1354.           SNAP S 2000:0 4000:0
  1355.  
  1356.           This command stores the data block from 2000:0 to 4000:0 in the
  1357.           Soft-ICE back trace buffer.
  1358.  
  1359. Display EMM allocation map
  1360.  
  1361.      Syntax :
  1362.  
  1363.           EMMMAP
  1364.  
  1365.      Comments :
  1366.  
  1367.           The EMMMAP command displays each physical page that is available
  1368.           for EMM memory and the pages that are currently mapped in.
  1369.  
  1370.           Note :
  1371.  
  1372.           The Soft-ICE EMM feature must be enabled to use this function.
  1373.           See chapter 8 for more information on enabling EMM capability.
  1374.  
  1375.      Example :
  1376.  
  1377.           EMMMAP
  1378.  
  1379.           This example displays the current EMM allocation in in the
  1380.           following form.
  1381.  
  1382.            Phy page Seg address Handle/Page
  1383.            00 D000 FFFF
  1384.            01 D400 0001/0000
  1385.            02 D800 0001/0001
  1386.            03 DC00 0001/0002
  1387.  
  1388.           In this example, physical page 0 is located at D000 and is
  1389.           unmapped. Physical page 1 is located at D400 and has handle 1,
  1390.           page 0 mapped into it. Physical page 2 is located at D800 and has
  1391.           handle 1, page I mapped into it. Physical page 3 is located at
  1392.           DC00 and has handle page 2 mapped into it.
  1393.  
  1394. 05.07 Windowing Commands
  1395.  
  1396.      WR Toggle register window
  1397.      WC Toggle/set size of code window
  1398.      WD Toggle/set size of data window
  1399.      EC Enter/exit code window
  1400.      . Locate current instruction
  1401.  
  1402.      Three window types may be created with Soft-ICE: register, data, and
  1403.      code. Any of these windows can be toggled on or off at any time. The
  1404.      data and code windows can be of variable size; the register window is
  1405.      fixed in size. The windows always remain in a fixed order. Starting
  1406.      from the top of the screen, the order is register window, data window,
  1407.      then code window.
  1408.  
  1409. Toggle register window
  1410.  
  1411.      Syntax :
  1412.  
  1413.           WR
  1414.  
  1415.      Comments :
  1416.  
  1417.           The command makes the register window visible if not currently
  1418.           visible. If the register window is currently visible, WR removes
  1419.           the register window.
  1420.  
  1421.           The register window displays the 8086 register set and the
  1422.           processor flags. Default Function: F2
  1423.  
  1424. Toggle/set size of code window
  1425.  
  1426.      Syntax :
  1427.  
  1428.           WC [window-size]
  1429.  
  1430.           Window-size :
  1431.                a decimal number between one and 21.
  1432.  
  1433.      Comments :
  1434.  
  1435.           If window-size is not specified, this command toggles the code
  1436.           window. If it was not visible it is made visible, and if it was
  1437.           visible it is removed.
  1438.  
  1439.           If window-size is specified the code window is resized, or it was
  1440.           not visible it is made visible with the specified size.
  1441.  
  1442.      Note :
  1443.  
  1444.           If you wish to move the cursor to the code window use the EC
  1445.           command. See description of the EC command for more details.
  1446.  
  1447.      Example :
  1448.  
  1449.           WC 12
  1450.  
  1451.           If no code window is present, then a code window 12 lines in
  1452.           length is created. If the code window is currently on the screen,
  1453.           it is resized to 12 lines.
  1454.  
  1455. Toggle/set size of data window
  1456.  
  1457.      Syntax :
  1458.  
  1459.           WD [window-size]
  1460.  
  1461.           Window-size :
  1462.                a decimal number between one and 21.
  1463.  
  1464.      Comments :
  1465.  
  1466.           If window-size is not specified, this command toggles the data
  1467.           window. If it was not visible it is made visible, and if it was
  1468.           visible it is removed.
  1469.  
  1470.           If window-size is specified the data window is resized, or it was
  1471.           not visible it is made visible with the specified size.
  1472.  
  1473.      Example :
  1474.  
  1475.           WD 1
  1476.  
  1477.           If no data window is present then a data window of one line is
  1478.           created. If the data window is currently on the screen, it is
  1479.           resized to one line.
  1480.  
  1481. Enter/exit code window
  1482.  
  1483.      Syntax :
  1484.  
  1485.           EC
  1486.  
  1487.      Comments :
  1488.  
  1489.           The EC command toggles the cursor location between the code
  1490.           window and the command window. If the cursor was in the command
  1491.           window it is moved to the code window, and if the cursor was in
  1492.           the code window it is moved to the command window.
  1493.  
  1494.           When the cursor is in the code window several options become
  1495.           available that make debugging much easier. The options are:
  1496.  
  1497.           Point-and-shoot break points.Point-and-shoot break points are set
  1498.           with the BP command. If no parameters are specified with the BPX
  1499.           command an execution break point is set at the location of the
  1500.           cursor position in the code window. The cursor must be on a line
  1501.           that contains code (place the code window in mixed mode if you
  1502.           are unsure). The default function key assignment for BPX is F9.
  1503.  
  1504.           Go to cursor line.You can set a temporary break point at the
  1505.           cursor and go with the HERE command. The cursor must be on a line
  1506.           that contains code (place the code window in mixed mode if you
  1507.           are unsure). The default function key assignment for HERE is F7.
  1508.  
  1509.           Scrolling the code window.The code window can be scrolled only
  1510.           while the cursor is in the code window. The scrolling keys (UP
  1511.           arrow, DOWN arrow, PageUp and PageDown) are redefined while the
  1512.           cursor is in code window. When the cursor is in the code window
  1513.           the scrolling keys do the following:
  1514.  
  1515.           up        Scroll code window up one line
  1516.           down      Scroll code window down one
  1517.           pageup    Scroll code window up one window
  1518.           pageDn    Scroll code window down one window<
  1519.  
  1520.      Note :
  1521.  
  1522.           The code window must be visible for the EC command to work.
  1523.           Default Function Key: F6
  1524.  
  1525. Locate current instruction
  1526.  
  1527.      Syntax :
  1528.  
  1529.           .
  1530.  
  1531.      Comments :
  1532.  
  1533.           When the code window is visible, the . command makes the current
  1534.           source line or current instruction visible.
  1535.  
  1536. 05.08 Debugger Customization Commands
  1537.  
  1538.      PAUSE Pause after each screen
  1539.      ALTKEY Set alternate key sequence to invoke Soft-ICE
  1540.      FKEY Show and edit function keys
  1541.      BASE Set/display current radix
  1542.      CTRL-P Toggle log session to printer
  1543.      Print-Screen Print contents of screen
  1544.      PRN Set printer output port
  1545.  
  1546. Pause after each screen
  1547.  
  1548.      Syntax :
  1549.  
  1550.           PAUSE [ON | OFF]
  1551.  
  1552.      Comments :
  1553.  
  1554.           PAUSE controls screen pause at the end of each page. If PAUSE is
  1555.           ON, you are prompted to press any key before information is
  1556.           scrolled off the window. The prompt is displayed in the status
  1557.           line at the bottom of the window.
  1558.  
  1559.           If noparameter is specified, the current state of PAUSE is
  1560.           displayed.
  1561.  
  1562.           The default is PAUSE mode ON.
  1563.  
  1564.      Example :
  1565.  
  1566.           PAUSE ON
  1567.  
  1568.           This command specifies that subsequent window display commands
  1569.           will cause the screen to wait for you to press a key before
  1570.           scrolling new information off the window.
  1571.  
  1572. Set alternate key sequence to invoke Soft-ICE
  1573.  
  1574.      Syntax :
  1575.  
  1576.           ALTKEY [ALTletter] | [CTRLletter] | [SYSREQ]
  1577.  
  1578.           Letter :
  1579.                Any letter (A - Z)
  1580.  
  1581.      Comments :
  1582.  
  1583.           The ALTKEY command allows the key sequence for popping up
  1584.           Soft-ICE to be changed. The key sequence be changed to CTRL +
  1585.           letter, ALT + letter, or the SysRq key.
  1586.  
  1587.           Occasionally you may be using a program that conflicts with the
  1588.           CTRL D key sequence that brings up the Soft-ICE window. One way
  1589.           to circumvent this possible problem is to use the ALTKEY command
  1590.           to change the key sequence. Another way is to add the SHIFT key
  1591.           to the current sequence. Soft-ICE does not respond to this key
  1592.           sequence and allows it to go through to your program. For example
  1593.           if a resident program you are using is brought up with the CTRL D
  1594.           key sequence, try using the key sequence CTRL SHIFT D to bring up
  1595.           your resident program. On some keyboards, you must press ALT and
  1596.           the prtsc key simultaneously to generate a system request. Care
  1597.           must be taken so the screen is not printed accidentally.
  1598.  
  1599.           If no parameter is specified, the current key sequence state is
  1600.           displayed. The default key sequence is CTRL D.
  1601.  
  1602.      Example :
  1603.  
  1604.           ALTKEY ALT Z
  1605.  
  1606.           This command specifies that the key sequence ALT Z will now be
  1607.           used to pop up the Soft-ICE window.
  1608.  
  1609. Show and edit function keys
  1610.  
  1611.      Syntax :
  1612.  
  1613.           FKEY [function-key-name string]
  1614.  
  1615.           function-key-name :
  1616.                F1, F2... F12
  1617.           string :
  1618.                The string consists of any valid Soft-ICE commands and the
  1619.                special character ^ (caret) and ; (semicolon). A ^ is placed
  1620.                in the string to make a command invisible. A ; is placed in
  1621.                the string to denote a carriage return.
  1622.  
  1623.      Comments :
  1624.  
  1625.           The FKEY command is used from the command line to assign a
  1626.           function key to a command string. Function key can be assigned to
  1627.           any command string that can be typed into Soft-ICE.
  1628.  
  1629.           If no parameters are specified, then the current function key
  1630.           assignments are displayed.
  1631.  
  1632.           To unassign a specified function key, use the FKEY command with
  1633.           these parameters: a function-key-name followed by a null string.
  1634.  
  1635.           The function keys can also be pre-initialized in the definition
  1636.           file S-ICE.DAT. For more information on function key definitions
  1637.           in the definition file, refer to section 6.4.
  1638.  
  1639.           Using carriage return symbols in a function key assignment string
  1640.           allows you to assign a function key a series of commands. A
  1641.           carriage return is represented by a ; (semicolon).
  1642.  
  1643.           If you put ^ (shift 6) in front of a function key definition, the
  1644.           subsequent command will be invisible. The command will function
  1645.           as normal, but all information displayed in the command window
  1646.           (including error messages) is suppressed. The invisible mode is
  1647.           useful when a command changes information in a window (code,
  1648.           register or data) but you do not want to clutter the command
  1649.           window, when a function key is made invisible with ^, the
  1650.           function key can be used in the middle of typing in other command
  1651.           without affecting their operation. For example, if you are using
  1652.           the default assignment for F2, you can toggle the register window
  1653.           with F2 even if you are partially through typing in your next
  1654.           command.
  1655.  
  1656.      Note :
  1657.  
  1658.           Soft-ICE now has a definition file named S-ICE.DAT. You can place
  1659.           function key assignments in this file so that function keys will
  1660.           be automatically assigned when Soft-ICE is loaded. The syntax for
  1661.           assigning a function key in the configuration file is:
  1662.  
  1663.           function-key-name = "string"
  1664.  
  1665.           When assigning function keys to a command string in S-ICE.DAT,
  1666.           the string must be enclosed in double quotes.
  1667.  
  1668.      Command line examples :
  1669.  
  1670.           FKEY F2 ^WR;
  1671.  
  1672.           This example will assign the toggle register window command to
  1673.           the F2 key. The ^ makes the function invisible, and the ; ends
  1674.           the function with a carriage return. The F2 key will toggle the
  1675.           register window on or off, and can even be evoked while typing in
  1676.           another command.
  1677.  
  1678.           FKEY F1 "G CS:120; R; G CS:"
  1679.  
  1680.           This example shows that multiple commands can be assigned to a
  1681.           single function key and that partial commands can be assigned for
  1682.           the user to complete. After this command is entered, pressing the
  1683.           F1 key will cause the program to execute until location CS:120 is
  1684.           reached, display the registers, then start the G command for the
  1685.           user to complete.
  1686.  
  1687.           FKEY F1 WD 3;D DS:100;
  1688.  
  1689.           This example will assign a series of commands to the F1 key. The
  1690.           function is visible, and ends with a carriage return. The F1 key
  1691.           will make the data window three lines long and dump data starting
  1692.           at DS:100.
  1693.  
  1694.      S-ICE.DAT example:
  1695.  
  1696.           F1 = "WR;WD 2;WC 10;"
  1697.  
  1698.           If this line is placed in S-ICE.DAT, when Soft-ICE is loaded it
  1699.           will assign the string to the F1 key. When F1 is pressed while in
  1700.           Soft-ICE, it will toggle the register window, create a data
  1701.           window of length 2 and a code window of length 10. For more
  1702.           information about assigning function key definitions in
  1703.           S-ICE.DAT, refer to chapter 6.
  1704.  
  1705. Set/display current radix
  1706.  
  1707.      Syntax :
  1708.  
  1709.           BASE [10 | 16]
  1710.  
  1711.      Comments :
  1712.  
  1713.           The BASE command sets the current radix to base 10 or base 16.
  1714.           Base 10 is of limited use in the narrow window because of window
  1715.           width limitations. It also limits the amount of information
  1716.           displayed in some commands in the wide mode.
  1717.  
  1718.           When the current radix is base 10, all numbers and addresses
  1719.           typed into and displayed by Soft-ICE are in decimal, When the
  1720.           current radix is base 16, all numbers and addresses typed into
  1721.           Soft-ICE are in hexadecimal except for the source line numbers
  1722.           and the screen coordinates and sizes in the WIN command
  1723.  
  1724.           These exceptions are always typed in and displayed as decimal
  1725.           numbers. The default radix is base 16.
  1726.  
  1727.      Example :
  1728.  
  1729.           BASE 16
  1730.  
  1731.           This example sets the current radix to base 16.
  1732.  
  1733. Toggle log session to printer
  1734.  
  1735.      Syntax :
  1736.  
  1737.           CTRL-P
  1738.  
  1739.      Comments :
  1740.  
  1741.           When the CTRL key followed by the P key is pressed, all
  1742.           subsequent information displayed in the command window is also
  1743.           sent to the printer. To turn the log to printer mode off, type
  1744.           CTRL followed by P again.
  1745.  
  1746.           When you are sending a lot of information to the printer using
  1747.           CTRL-P, you may want to turn the PAUSE command OFF to allow
  1748.           information to scroll off the window without pressing a key.
  1749.  
  1750. Print contents of screen
  1751.  
  1752.      Syntax :
  1753.  
  1754.           Print-Screen
  1755.  
  1756.      Comments :
  1757.  
  1758.           Depressing the print-screen key does a screen dump to printer.
  1759.           All information from the screen is sent the printer.
  1760.  
  1761.           If you wish to print the memory map or help information is
  1762.           usually much faster to use CTRL-P than Print-Screen. This is
  1763.           because Print-Screen prints every character on the screen
  1764.           including borders.
  1765.  
  1766. Set printer output port
  1767.  
  1768.      Syntax :
  1769.  
  1770.           PRN [LPTx | COMx]
  1771.  
  1772.           x :
  1773.                a decimal number between 1 and 4.
  1774.  
  1775.      Comments :
  1776.  
  1777.           The PRN command allows you to send output from the CTRL-P and
  1778.           Print-Screen commands to a different printer port.
  1779.  
  1780.           If no parameters are supplied, PRN displays the currently
  1781.           assigned printer port.
  1782.  
  1783.      Example :
  1784.  
  1785.           PRN COM 1
  1786.  
  1787.           This command causes the CTRL-P and Print-Screen command output to
  1788.           go to the COM 1 port.
  1789.  
  1790. 05.09 Screen Control Commands
  1791.  
  1792.      FLASH Restore screen during P and T
  1793.      FLICK Screen flicker reduction
  1794.      WATCHV Set watch video mode
  1795.      RS Restore program screen
  1796.      CLS Clear window
  1797.      ALTSCR Change to alternate screen
  1798.      WIN Change size of Soft-ICE window
  1799.  
  1800. Restore screen during P and T
  1801.  
  1802.      Syntax :
  1803.  
  1804.           FLASH [ON | OFF]
  1805.  
  1806.      Comments :
  1807.  
  1808.           The FLASH command lets you specify whether the screen will be
  1809.           restored during any Trace and Program step commands. If you
  1810.           specify that the screen is to be restored it is restored for the
  1811.           brief time period that the P or T command is executing. This
  1812.           feature is needed to debug sections of code that access video
  1813.           memory.
  1814.  
  1815.           If the P command executes across a call or an interrupt, the
  1816.           screen will always be restored, because the routine being called
  1817.           may write to the screen.
  1818.  
  1819.           If no parameter is specified, the current state of FLASH is
  1820.           displayed.
  1821.  
  1822.           The default is FLASH mode OFF.
  1823.  
  1824.      Example :
  1825.  
  1826.           FLASH ON
  1827.  
  1828.           This command turns on FLASH mode. The screen will be restored
  1829.           during any subsequent P or T commands.
  1830.  
  1831. Screen flicker reduction
  1832.  
  1833.      Syntax :
  1834.  
  1835.           FLICK [ON | OFF]
  1836.  
  1837.      Comments :
  1838.  
  1839.           Certain types of video cards require waiting for horizontal or
  1840.           vertical retrace before outputting characters. If the video
  1841.           writes are made arbitrarily, flickering will appear while
  1842.           displaying characters. If flickering occurs on your screen while
  1843.           using the Soft-ICE window, you should turn FLICK on.
  1844.  
  1845.           With some EGA cards, colors will not be restored properly when
  1846.           you exit from Soft-ICE. This is a problem with virtualizing EGA
  1847.           video. The port 3DA is a video port used for two purposes. The
  1848.           first is old CGA software polling 3DA for hsync and vsync. This
  1849.           allows them to have flicker free output on some old CGA
  1850.           controller cards. The second is that it is used to reset a
  1851.           palette latch on EGA cards. Soft-ICE has an algorithm to avoid
  1852.           having to constantly watch this port, which would slow down old
  1853.           programs that think they are on a CGA. However, there can
  1854.           occasional be circumstances where this algorithm does not work.
  1855.           If you are using Soft- ICE on an EGA screen and you notice that
  1856.           the colors are not restored correctly, then turn FLICK ON and
  1857.           Soft-ICE will watch the 3DA port, fixing the problem.
  1858.  
  1859.           When FLICK mode is ON, screen update will be slower.
  1860.  
  1861.           If no parameter is specified, the current state of FLICK is
  1862.           displayed.
  1863.  
  1864.           The default is FLICK mode OFF.
  1865.  
  1866.      Example :
  1867.  
  1868.           FLICK ON
  1869.  
  1870.           This command turns on FLICK mode. This causes Soft-ICE to wait
  1871.           for the horizontal or vertical retrace before outputting
  1872.           characters.
  1873.  
  1874. Set watch video mode
  1875.  
  1876.      Syntax :
  1877.  
  1878.           WATCHV [ON | OFF]
  1879.  
  1880.      Comments :
  1881.  
  1882.           The WATCHV command allows you to specify how Soft-ICE should
  1883.           watch the video ports. Normally, Soft-ICE only watches video
  1884.           ports after an INT 10 instruction has been executed that switches
  1885.           to a non-character video mode. Some programs do not use INT 10 to
  1886.           switch modes. In these cases, if WATCHV is OFF, Soft-ICE may have
  1887.           trouble saving and restoring the screen properly. Turning WATCHV
  1888.           ON will cause Soft-ICE to watch the video ports all the time.
  1889.  
  1890.           Turn WATCHV ON if you notice that Soft-ICE is not handling your
  1891.           screen properly, or if the cursor is not being restored properly.
  1892.           Turning WATCHV ON may have a performance impact in certain video
  1893.           modes.
  1894.  
  1895.           If no parameter is specified, the current state of WATCHV is
  1896.           displayed.
  1897.  
  1898.           The default is WATCHV mode OFF.
  1899.  
  1900.      Example :
  1901.  
  1902.           WATCHV ON
  1903.  
  1904.           This command turns on WATCHV mode. This causes Soft-ICE to watch
  1905.           additional video ports for the purpose of virtualization.
  1906.  
  1907. Restore program screen
  1908.  
  1909.      Syntax :
  1910.  
  1911.           RS
  1912.  
  1913.      Comments :
  1914.  
  1915.           The RS command allows you to restore the program screen
  1916.           temporarily. The Soft-ICE window disappears until any key is
  1917.           pressed.
  1918.  
  1919.           This feature is useful when debugging graphic programs that
  1920.           update the screen frequently. When Soft-ICE is brought up, it
  1921.           returns to text mode. Using the RS command temporarily restores
  1922.           the graphics screen.
  1923.  
  1924.      Example :
  1925.  
  1926.           RS
  1927.  
  1928. Clear window
  1929.  
  1930.      Syntax :
  1931.  
  1932.           CLS
  1933.  
  1934.      Comments :
  1935.  
  1936.           The CLS command clears the Soft-ICE window and moves the prompt
  1937.           and the cursor to the upper left-hand corner the window.
  1938.  
  1939.      Example :
  1940.  
  1941.           CLS
  1942.  
  1943. Change to alternate screen
  1944.  
  1945.      Syntax :
  1946.  
  1947.           ALTSCR [ON | OFF]
  1948.  
  1949.      Comments :
  1950.  
  1951.           The ALTSCR command allows you to redirect the Soft-ICE output
  1952.           from your default screen to the alternate screen. This feature is
  1953.           useful, for instance, when you want to debug a graphics program
  1954.           without having to switch between the Soft-ICE window and the
  1955.           graphics display.
  1956.  
  1957.           ALTSCR requires the system to have two monitors attached. The
  1958.           alternate monitor should be in a character mode, which is the
  1959.           default mode for monitors.
  1960.  
  1961.           The default is ALTSCR mode OFF.
  1962.  
  1963.      Example :
  1964.  
  1965.           ALTSCR ON
  1966.  
  1967.           This command redirects screen output to the alternate monitor.
  1968.  
  1969. Change size of Soft-ICE window
  1970.  
  1971.      Syntax :
  1972.  
  1973.           N :
  1974.                When N is specified, the window will be set to the narrow
  1975.                width : 46 characters.
  1976.           W :
  1977.                When W is specified, the window will be set to full screen
  1978.                width
  1979.           start-row :
  1980.                Number from 0 to 17 specifying row where window display
  1981.                starts.
  1982.           length :
  1983.                Number from 8 to 25 specifying how many lines tall you want
  1984.                the window to be.
  1985.           start-column :
  1986.                Column position of the left side of narrow window. The
  1987.                start-row and start-column specify the upper left hand
  1988.                corner of the narrow window. The start-column is ignored if
  1989.                applied to the wide window.
  1990.  
  1991.      Comments :
  1992.  
  1993.           The WIN command allows you to modify the width and height of the
  1994.           Soft-ICE display window.
  1995.  
  1996.           If no parameters are specified, this command toggles the window
  1997.           between wide and narrow screen display modes.
  1998.  
  1999.           If the WIN command is specified with only the N or the W
  2000.           parameter, the window size will be changed to the requested width
  2001.           at the current height.
  2002.  
  2003.           If the number of lines plus the starting row number is larger
  2004.           than25, the window length goes to the bottom of the screen.
  2005.  
  2006.           The default is WIN mode narrow.
  2007.  
  2008.      Examples :
  2009.  
  2010.           WIN N 4 9 30
  2011.  
  2012.           This command causes the window display to start at row 4 and
  2013.           column 30, and to be 9 rows tall and 46 characters wide.
  2014.  
  2015.           WIN
  2016.  
  2017.           This command toggles the window display width from its current
  2018.           state (either wide or narrow) to the opposite state.
  2019.  
  2020.           WIN W 10 8
  2021.  
  2022.           This command causes the window display to start at row 10, and to
  2023.           be 8 rows tall and go the width of the screen.
  2024.  
  2025. 05.10 Symbol and Source Line Commands
  2026.  
  2027.      SYM Display/set symbol
  2028.      SYMLOC Relocate symbol base
  2029.      SRC Toggle between source, mixed and code
  2030.      FILE Change/display current source
  2031.      SS Search current source file for string
  2032.  
  2033. Display/set symbol
  2034.  
  2035.      Syntax :
  2036.  
  2037.           SYM [symbol-name [value]]
  2038.  
  2039.           symbol-name :
  2040.                A valid symbol name. The symbol name can end with an *
  2041.                (asterisk). This allows searching if only the first part of
  2042.                the symbol name is known. The , (comma) character can be
  2043.                used as a wild card character in place of character in the
  2044.                symbol-name.
  2045.           value :
  2046.                This is a word value that is used if you want to set a
  2047.                symbol to a specific value.
  2048.  
  2049.      Comments :
  2050.  
  2051.           The SYM command allows displaying and setting of symbols. If SYM
  2052.           is entered with no parameters all symbols are displayed. The
  2053.           value of each symbol is displayed next to the symbol name.
  2054.  
  2055.           If a symbol name is specified with no value then the symbol name
  2056.           and value are displayed. If the symbol name was not found then
  2057.           nothing is displayed.
  2058.  
  2059.           The SYM command is often useful for finding a symbol name when
  2060.           you can only remember a portion of the name Two wild card methods
  2061.           are available for locating symbols. If symbol-name ends with an
  2062.           *, then all symbols that match the actual characters typed prior
  2063.           to the * will be displayed regardless of their ending characters.
  2064.           If a , is used in place of a specific character in symbol-name,
  2065.           that character is a wild card character.
  2066.  
  2067.           If value is specified, all symbols that match symbol-name are set
  2068.           to the value. All symbols have word values.
  2069.  
  2070.      Examples :
  2071.  
  2072.           SYM FOO*
  2073.  
  2074.           All symbols that start with FOO are displayed.
  2075.  
  2076.           SYM FOO* 6000
  2077.  
  2078.           All symbols that start with FOO are given the value 6000.
  2079.  
  2080. Relocate symbol base
  2081.  
  2082.      Syntax :
  2083.  
  2084.           SYMLOC segment-address
  2085.  
  2086.      Comments :
  2087.  
  2088.           The SYMLOC command relocates the segment components of all
  2089.           symbols relative to the specified segment address. This function
  2090.           is necessary when debugging loadable device drivers or other
  2091.           programs that can not be loaded directly with LDR.EXE.
  2092.  
  2093.           When relocating for a loadable device driver, use the value of
  2094.           the base address of the driver as found in the MAP command. When
  2095.           relocating for an .EXE program, the value is 10H greater than
  2096.           that found as the base in the MAP command. When relocating for a
  2097.           .COM program, use the base segment address that is found in the
  2098.           MAP command.
  2099.  
  2100.           The MAP command will display at least two entries for each
  2101.           program. The first is typically the environment and the second is
  2102.           typically the program. The base address of the program is the
  2103.           relocation value.
  2104.  
  2105.      Example :
  2106.  
  2107.           SYMLOC 1244 + 10
  2108.  
  2109.           This will relocate all segments in the symbol table relative to
  2110.           1244. The + 10 is used to relocate a TSR that was originally a
  2111.           .EXE file. If it is a .COM file the + 10 is not necessary.
  2112.  
  2113. Toggle between source, mixed and code
  2114.  
  2115.      Syntax :
  2116.  
  2117.           SRC [?]
  2118.  
  2119.      Comments :
  2120.  
  2121.           The SRC command toggles between source mode, mixed mode and code
  2122.           mode in the code window.
  2123.  
  2124.           If SRC ? is entered, the current state is displayed.
  2125.  
  2126.      Example :
  2127.  
  2128.           SRC
  2129.  
  2130.           This command changes the current mode of the code window. If the
  2131.           mode was source, it becomes mixed. the mode was mixed, it becomes
  2132.           code. If the mode was code, it becomes source. Default-Function
  2133.           Key: F3
  2134.  
  2135. Change/display current source file
  2136.  
  2137.      Syntax :
  2138.  
  2139.           FILE [file-name]
  2140.  
  2141.      Comments :
  2142.  
  2143.           If a file-name is specified, that file becomes the current file
  2144.           and the start of the file is displayed in the code window. If no
  2145.           name is specified, the name of the current source file (if any)
  2146.           is displayed.
  2147.  
  2148.           The FILE command is often useful when setting a break point on a
  2149.           line that has no associated public symbol. Use file to bring the
  2150.           desired file into the code window, use the SS command to locate
  2151.           the specific line, move the cursor the specific line, then type
  2152.           BPX to set the break point.
  2153.  
  2154.      Note :
  2155.  
  2156.           Only source files that have been loaded into extended memory with
  2157.           LDR.EXE are available with the FILE command.
  2158.  
  2159.      Example :
  2160.  
  2161.           FILE MAIN.C
  2162.  
  2163.           If MAIN.C had been loaded with LDR.EXE, this command brings it up
  2164.           in the code window starting with line 1.
  2165.  
  2166. Search current source file for string
  2167.  
  2168.      Syntax :
  2169.  
  2170.           SS [line-number] [' string']
  2171.  
  2172.           Line-number :
  2173.                a decimal number
  2174.           String :
  2175.                a character string surrounded by quotes. The quotes can be
  2176.                either single quotes or double quotes.
  2177.  
  2178.      Comments :
  2179.  
  2180.           The SS command searches the current source file for the specified
  2181.           character string. If there is a match, the line that the string
  2182.           was located in will be displayed as the top line in the code
  2183.           window.
  2184.  
  2185.           The search starts at the specified line number. If no line number
  2186.           is specified the search starts at the top line displayed in the
  2187.           code window.
  2188.  
  2189.           If no parameters are specified, the search continues for the
  2190.           previously specified string.
  2191.  
  2192.      Note :
  2193.  
  2194.           The code window must be visible and in source mode before using
  2195.           the SS command.
  2196.  
  2197.      Example :
  2198.  
  2199.           SS 1 'if (i = = 3)'
  2200.  
  2201.           The current source file is searched starting at line 1 for the
  2202.           string 'if (i = = 3)'. The line containing the next occurrence of
  2203.           the string becomes the top line displayed in the code window.
  2204.